home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / PCSSP.LZH / PC-SSP.ZIP / MATSTOR.ZIP / LOC.FOR < prev    next >
Text File  |  1985-11-29  |  2KB  |  62 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE LOC
  5. C
  6. C        PURPOSE
  7. C           COMPUTE A VECTOR SUBSCRIPT FOR AN ELEMENT IN A MATRIX OF
  8. C           SPECIFIED STORAGE MODE
  9. C
  10. C        USAGE
  11. C           CALL LOC (I,J,IR,N,M,MS)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           I   - ROW NUMBER OF ELEMENT
  15. C           J   - COLUMN NUMBER  OF ELEMENT
  16. C           IR  - RESULTANT VECTOR SUBSCRIPT
  17. C           N   - NUMBER OF ROWS IN MATRIX
  18. C           M   - NUMBER OF COLUMNS IN MATRIX
  19. C           MS  - ONE DIGIT NUMBER FOR STORAGE MODE OF MATRIX
  20. C                  0 - GENERAL
  21. C                  1 - SYMMETRIC
  22. C                  2 - DIAGONAL
  23. C
  24. C        REMARKS
  25. C           NONE
  26. C
  27. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  28. C           NONE
  29. C
  30. C        METHOD
  31. C           MS=0   SUBSCRIPT IS COMPUTED FOR A MATRIX WITH N*M ELEMENTS
  32. C                  IN STORAGE (GENERAL MATRIX)
  33. C           MS=1   SUBSCRIPT IS COMPUTED FOR A MATRIX WITH N*(N+1)/2 IN
  34. C                  STORAGE (UPPER TRIANGLE OF SYMMETRIC MATRIX). IF
  35. C                  ELEMENT IS IN LOWER TRIANGULAR PORTION, SUBSCRIPT IS
  36. C                  CORRESPONDING ELEMENT IN UPPER TRIANGLE.
  37. C           MS=2   SUBSCRIPT IS COMPUTED FOR A MATRIX WITH N ELEMENTS
  38. C                  IN STORAGE (DIAGONAL ELEMENTS OF DIAGONAL MATRIX).
  39. C                  IF ELEMENT IS NOT ON DIAGONAL (AND THEREFORE NOT IN
  40. C                  STORAGE), IR IS SET TO ZERO.
  41. C
  42. C     ..................................................................
  43. C
  44.       SUBROUTINE LOC(I,J,IR,N,M,MS)
  45. C
  46.       IX=I
  47.       JX=J
  48.       IF(MS-1) 10,20,30
  49.    10 IRX=N*(JX-1)+IX
  50.       GO TO 36
  51.    20 IF(IX-JX) 22,24,24
  52.    22 IRX=IX+(JX*JX-JX)/2
  53.       GO TO 36
  54.    24 IRX=JX+(IX*IX-IX)/2
  55.       GO TO 36
  56.    30 IRX=0
  57.       IF(IX-JX) 36,32,36
  58.    32 IRX=IX
  59.    36 IR=IRX
  60.       RETURN
  61.       END
  62.